home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-11-05 | 2.6 KB | 118 lines | [TEXT/CWIE] |
- unit realUtils;
-
- interface
- uses
- Types, Memory, QuickDraw, Packages, Menus, Events, Fonts, ToolUtils, globals, Utilities, Graphics;
-
- function NewRealWindow (name: str255; width, height: LongInt): boolean;
- procedure DisplayRealImage(rData: rImagePtr; min, max: real; BlackIsZero: boolean);
- function ConvertToReal:boolean;
-
-
- implementation
-
-
- function NewRealWindow (name: str255; width, height: LongInt): boolean;
- var
- TempH: handle;
- begin
- tempH := GetBigHandle(width * height * SizeOf(real));
- if TempH = nil then begin
- PutMemoryAlert;
- NewRealWindow := false;
- exit(NewRealWindow);
- end;
- if not NewPicWindow(name, width, height) then begin
- DisposeHandle(TempH);
- exit(NewRealWindow);
- end;
- info^.DataH := tempH;
- UpdateTitleBar;
- UpdateWindowsMenuItem;
- NewRealWindow := true;
- end;
-
-
- procedure DisplayRealImage(rData: rImagePtr; min, max: real; BlackIsZero: boolean);
- var
- row, col, i, base, width, height: LongInt;
- r, scale: real;
- line: lineType;
- begin
- with info^ do begin
- width := pixelsPerLine;
- height := nLines;
- end;
- scale := 255.0 / (max - min);
- for row := 0 to height - 1 do begin
- base := row * width;
- for col := 0 to width - 1 do begin
- r := rData^[base + col];
- line[col] := round((r - min) * scale);
- end;
- PutLine(0, row, width, line);
- end;
- if BlackIsZero then
- InvertPic;
- with info^ do begin
- Changes := true;
- fit:=StraightLine;
- nCoefficients := 2;
- if BlackIsZero then begin
- coefficient[1] := max;
- coefficient[2] := -1.0/scale;
- end else begin
- coefficient[1] := min;
- coefficient[2] := 1.0/scale;
- end;
- nKnownValues := 0;
- ZeroClip := false;
- GenerateValues;
- UnitOfMeasure := '';
- UpdateTitleBar;
- end;
- end;
-
-
- function ConvertToReal:boolean;
- var
- row, col, i, sum, base: LongInt;
- width, height, NeededSize, CurrentSize: LongInt;
- line: LineType;
- rData: rImagePtr;
- TempH: handle;
- begin
- with info^ do begin
- width := pixelsPerLine;
- height := nLines;
- NeededSize := width * height * SizeOf(real);
- CurrentSize := 0;
- if dataH <> nil then
- CurrentSize := GetHandleSize(dataH);
- if CurrentSize <> NeededSize then begin
- tempH := GetBigHandle(NeededSize);
- if TempH = nil then begin
- PutMemoryAlert;
- ConvertToReal := false;
- exit(ConvertToReal);
- end;
- dataH := tempH;
- end;
- hlock(dataH);
- rData := rImagePtr(dataH^);
- end;
- for row:= 0 to height - 1 do begin
- GetLine(0, row, width, line);
- base := row * width;
- for col := 0 to width - 1 do
- rData^[base + col] := line[col];
- end;
- hunlock(info^.dataH);
- UpdateTitleBar;
- UpdateWindowsMenuItem;
- ConvertToReal := true;
- end;
-
-
-
- end. {realUtils Unit}